home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / LANG / PROLOG / BP330 / !BinPro330 / progs / fbrev < prev    next >
Text File  |  1994-02-21  |  2KB  |  81 lines

  1. % uses builtin append
  2.  
  3. nrev([],[]).
  4. nrev([X|Xs],R):-
  5.   nrev(Xs,T),
  6.   append(T,[X],R).
  7.  
  8. full_range(It,L):- range(_,1,It),nrev(L,_), fail.
  9. full_range(_,_).
  10.  
  11. dummy(_,_).
  12.  
  13. empty_range(It,L):-range(_,1,It),dummy(L,_),fail.
  14. empty_range(_,_).
  15.  
  16. range(Min,Min,Max):-Min=<Max.
  17. range(I,Min,Max):-
  18.         Min<Max,
  19.         Min1 is Min+1,
  20.         range(I,Min1,Max).
  21.  
  22. integers([],I,I):-!.
  23. integers([I0|L],I0,I):-I0<I,I1 is I0+1,integers(L,I1,I).
  24.  
  25. bm(It,Len,Time,Lips):-
  26.     integers(L,0,Len),
  27.     timer(T0),
  28.     empty_range(It,L),
  29.     timer(T1),
  30.     full_range(It,L),
  31.     timer(T2),
  32.     Time is (T2-T1)-(T1-T0),
  33.     L1 is Len+1,
  34.     L2 is Len+2,
  35.     LI is (L1*L2)/2,
  36.     LIs is It*LI,
  37.     Lips is (LIs/Time)/1000.0.
  38.  
  39. htest(N,H,T,S):-
  40.         integers(Is,0,N),
  41.         statistics(global_stack,[H1,_]),
  42.         statistics(trail,[T1,_]),
  43.         statistics(local_stack,[S1,_]),
  44.         nrev(Is,_),
  45.         statistics(global_stack,[H2,_]),
  46.         statistics(trail,[T2,_]),
  47.         statistics(local_stack,[S2,_]),
  48.         H is H2-H1,T is T2-T1,S is S2-S1.
  49.  
  50. go(Mes,Len,It):-
  51.     bm(It,Len,T,L),
  52.         nl,write(Mes=[klips=L]),nl,
  53.     write([time=T,length=Len,iterations=It]),nl,
  54.     htest(Len,H,Tr,S),
  55.     nl,write(Mes=[heap=H,trail=Tr,stack=S]),nl.
  56.  
  57. gg:-go(50,100).
  58.  
  59. g0:-go(100,200).
  60.  
  61. g1:-go(100,800).
  62.  
  63. g2:-go(200,200).
  64.  
  65. g3:-write('use bp -h20000'),nl,go(2000,1).
  66.  
  67. go(L,I):-go(test,L,I).
  68.  
  69. go:-go('BMARK_fbrev:').
  70.  
  71. go(Mes):-
  72.     Len=300,
  73.     It=300,
  74.     go(Mes,Len,It).
  75.  
  76. timer(T):-statistics(runtime,[T0,_]),T is T0/1000.0.
  77. %timer(T):-statistics(cputime,T).
  78. %timer(T):-T is cputime.
  79.  
  80. p:-[fbrev].
  81.